Set Up Steps

library(censusapi)
library(tidycensus)
library(tidyverse)
library(sf)
library(geojsonsf)
library(mapview)
library(dplyr)
library(plotly)
library(tigris)
library(readxl)
library(leaflet)
library(RColorBrewer)
library(sp)

library(tidyverse)
library(plotly)
library(sf)
library(mapview)
library(tigris)
library(censusapi)
library(leaflet)
library(usmap)

mapviewOptions(
  basemaps = "CartoDB.Positron",
  #vector.palette = colorRampPalette(cols)
)

options(
  tigris_class = "sf",
  tigris_use_cache = TRUE
)

Sys.setenv(CENSUS_KEY="0c313bd613a7281ae62c2fbb004d156d647e9c94")
acs_vars <-
  listCensusMetadata(
    name = "2018/acs/acs5",
    type = "variables"
  )

Percentage of Households Without Internet Access

sc_internet <- 
  getCensus(
    name = "acs/acs5",
    vintage = 2018,
    region = "block group:*", 
    regionin = "state:06+county:085",
    vars = "group(B28002)"
  ) %>%
  mutate(
    blockgroup = paste0(state,county,tract,block_group)
  ) %>%
  select_if(!names(.) %in% c("GEO_ID","state","county","tract","block_group","NAME")) %>%
  dplyr::select(-c(contains("EA"),contains("MA"),contains("M"))) %>% 
  gather(
    key = "variable", 
    value = "estimate", 
    -blockgroup) %>% 
  mutate(
    label = acs_vars$label[match(variable,acs_vars$name)]
    ) %>% 
  dplyr::select(-variable) %>%
  separate(label, into = c(NA, NA, "subscription", "type", "additional"), sep = "!!") %>% 
  filter(is.na(subscription) | subscription == "No Internet access") %>%
  mutate(
    subscription = replace_na(subscription, "total_num")
  ) %>%
  dplyr::select(blockgroup, estimate, subscription) %>%
  spread(key = subscription, value = estimate) %>%
  mutate(
    percent_no_internet = (`No Internet access`*100 / total_num) %>% round(1)
  )
sc_blockgroups_sj <-
  block_groups("CA","Santa Clara", cb=F, progress_bar=F) %>% 
  st_transform('+proj=longlat +datum=WGS84')

# Get San Jose geometry
sj_geom <- places("CA", cb = F, progress_bar = FALSE) %>% 
  filter(NAME == "San Jose") %>% 
  st_transform('+proj=longlat +datum=WGS84')

sj_blockgroups <- sc_blockgroups_sj[st_contains(sj_geom, sc_blockgroups_sj %>% st_centroid())[[1]],]

sj_blockgroups_internet <- sc_internet %>% filter(blockgroup %in% sj_blockgroups$GEOID) %>% left_join(sj_blockgroups, by = c("blockgroup" = "GEOID")) %>% st_as_sf()
total_no_internet_sj = sum(sj_blockgroups_internet$`No Internet access`)
total_sj <- sum(sj_blockgroups_internet$total_num)
perc_no_internet_sj <- total_no_internet_sj*100/total_sj
print(perc_no_internet_sj)
## [1] 8.052816
sj_blockgroups_full <-
  block_groups("CA","Santa Clara", cb=F, progress_bar=F) %>% 
  st_transform('+proj=longlat +datum=WGS84') %>% 
  filter(GEOID %in% sj_blockgroups$GEOID)

mapview(sj_blockgroups_internet %>% dplyr::select(percent_no_internet), layer.name = "Percentage of households without internet access")

Percentage of Households Without a Computer

sc_computer <- getCensus(
  name = "acs/acs5",
  vintage = 2018,
  region = "block group:*", 
  regionin = "state:06+county:085",
  vars = "group(B28003)"
  ) %>%
  mutate(blockgroup = paste0(state,county,tract,block_group)) %>%
  select_if(!names(.) %in% c("GEO_ID","state","county","tract","block_group","NAME")) %>%
  dplyr::select(-c(contains("EA"),contains("MA"),contains("M"))) %>% 
  gather(key = "variable", value = "estimate", -blockgroup) %>% 
  mutate(label = acs_vars$label[match(variable,acs_vars$name)]) %>% 
  dplyr::select(-variable) %>%
  separate(label, into = c(NA, NA, "computer", "internet"), sep = "!!") %>% 
  filter(is.na(computer) | computer == "No computer") %>%
  mutate(computer = replace_na(computer, "total_num")) %>%
  dplyr::select(blockgroup, estimate, computer) %>%
  spread(key = computer, value = estimate) %>%
  mutate(percent_no_computer = (`No computer`*100 / total_num) %>% round(1))
sj_blockgroups_computer <- sc_computer %>% filter(blockgroup %in% sj_blockgroups$GEOID) %>% left_join(sj_blockgroups, by = c("blockgroup" = "GEOID")) %>% st_as_sf()

total_no_computer_sj = sum(sj_blockgroups_computer$`No computer`)
total_sj_comp <- sum(sj_blockgroups_computer$total_num)
perc_no_computer_sj <- total_no_computer_sj*100/total_sj_comp
print(perc_no_computer_sj)
## [1] 5.840027
mapview(sj_blockgroups_computer %>% dplyr::select(percent_no_computer), layer.name = "Percentage of households without a computer")

Example Supermarket Outreach

A block with high % of no internet access:

example <-
  sj_blockgroups_internet[29,]
mapview(example)
# This creates file paths for the SafeGraph folder and COVID-19 GitHub folder.

sg_path <- "/Users/armellecoutant/pCloud Drive/SFBI/Restricted Data Library/Safegraph/" 

github_path  <- "/Users/armellecoutant/Documents/GitHub/covid19/"

# This sets URLs for Point of Interest (POI) location data.

poi_url_Mar2020 <-
  paste0(sg_path, "/core/2020/03/CoreRecords-CORE_POI-2019_03-2020-03-25/ca_poi_Mar20.rds")

poi_url_Apr2020 <-
  paste0(sg_path, "/core/2020/04/CoreApr2020Release-CORE_POI-2020_03-2020-04-07/ca_poi_Apr20.rds")

poi_url_2019 <-
  paste0(sg_path,'covid19analysis/ca_poi.rds')

Can be associated with grocery store locations to determine which grocery stores to target for outreach.

poi_caApr20 <- readRDS (poi_url_Apr2020)

poi_sj <-
  poi_caApr20 %>%
  filter(city == "San Jose") %>%
  filter(naics_code == "445110")

coordinates(poi_sj) <- c("longitude", "latitude")
proj4string(poi_sj) <- CRS("+init=epsg:4326")

mapview(poi_sj)

Example Bus Outreach

# shapes <-
# read_csv("/Users/armellecoutant/Documents/GitHub/218z/Armelle_Coutant/digital_inclusion/gtfs_vta/shapes.txt")